package ar.edu.unju.fi.model.dao.impl;

import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import ar.edu.unju.fi.hibernate.base.HibernateBase;
import ar.edu.unju.fi.model.dao.PedidoDAO;
import ar.edu.unju.fi.model.domain.Pedido;
import ar.edu.unju.fi.model.domain.Usuario;



public class PedidoDAOImpl extends HibernateBase implements PedidoDAO{

	@Override
	public List<Pedido> getAll(long pedidoId) {
		
		return null;
	}

	@Override
	public List<Pedido> getAll() {
		Criteria criteria = getSession().createCriteria(Pedido.class);
		return criteria.list();
		
	}

	@Override
	public Pedido validateCode(Integer pedidoId) {
		
		Criteria criteria = getSession().createCriteria(Pedido.class);
		criteria.add(Restrictions.eq("pedido_id",pedidoId));
		return (Pedido) criteria.uniqueResult();
	}

	@Override
	public void insert(Pedido pedido) {
		
	}

	@Override
	public void save(Pedido pedido) {
		
		getSession().beginTransaction();
        getSession().save(pedido);
        getSession().getTransaction().commit();
		
	}

	@Override
	public void update(Pedido pedido) {
		getSession().beginTransaction();
		getSession().update(pedido);
		getSession().getTransaction().commit();
		
	}
	

	@Override
	public Pedido get(Integer pedidoId) {
		return (Pedido) getSession().get(Pedido.class, pedidoId);
	}

	@Override
	public List<Pedido> getFecha(Date fecha) {
		Criteria criteria = getSession().createCriteria(Pedido.class);
		criteria.add(Restrictions.eq("fechaPedido",fecha));
		return criteria.list();
	}

	
	@Override
	public List<Pedido> getAllList(Integer idUsuario) {
		
		Criteria criteria = getSession().createCriteria(Pedido.class);
		System.out.println(idUsuario);
        if(!idUsuario.toString().isEmpty())
            criteria.add(Restrictions.ilike("usuario_creacion", "%"+idUsuario+"%"));
        return criteria.list();
		
	}

	@Override
	public List<Pedido> getAllEstado(String estado) {
		
		Criteria criteria = getSession().createCriteria(Pedido.class);
		System.out.println(estado);
        if(!estado.isEmpty())
            criteria.add(Restrictions.ilike("estado", "%"+estado+"%"));
        return criteria.list();
		
	}
}
